Extension point chains
Documentation
Operation Chain registration
Contribution Descriptors
- Class: org.nuxeo.ecm.automation.core.OperationChainContribution
Existing Contributions
Contributions are presented in the same order as the registration order on this extension point. This order is displayed before the contribution name, in brackets.
-
<extension point="chains" target="org.nuxeo.ecm.core.operation.OperationServiceComponent"> <chain id="VersionAndAttachFile"> <operation id="Context.PushBlobList"> </operation> <operation id="Repository.GetDocument"> <param name="value" type="string">expr:Context.get("currentDocument")</param> </operation> <operation id="Document.CheckIn"> <param name="version" type="string">minor</param> <param name="comment" type="string">Automatic checkin before file update</param> </operation> <operation id="Context.SetInputAsVar"> <param name="name" type="string">newDocument</param> </operation> <operation id="Context.SetVar"> <param name="name" type="string">currentDocument</param> <param name="value" type="string">expr:Context.get("newDocument").id</param> </operation> <operation id="Context.PopBlobList"> </operation> <operation id="BlobHolder.AttachOnCurrentDocument"> <param name="useMainBlob" type="boolean">true</param> </operation> </chain> <chain id="AttachFiles"> <operation id="BlobHolder.AttachOnCurrentDocument"> <param name="useMainBlob" type="boolean">false</param> </operation> </chain> <chain id="VersionAndAttachFiles"> <operation id="Context.PushBlobList"> </operation> <operation id="Repository.GetDocument"> <param name="value" type="string">expr:Context.get("currentDocument")</param> </operation> <operation id="Document.CheckIn"> <param name="version" type="string">minor</param> <param name="comment" type="string">Automatic checkin before files update</param> </operation> <operation id="Context.SetInputAsVar"> <param name="name" type="string">newDocument</param> </operation> <operation id="Context.SetVar"> <param name="name" type="string">currentDocument</param> <param name="value" type="string">expr:Context.get("newDocument").id</param> </operation> <operation id="Context.PopBlobList"> </operation> <operation id="BlobHolder.AttachOnCurrentDocument"> <param name="useMainBlob" type="boolean">false</param> </operation> </chain> <chain id="FileManager.ImportWithMetaData"> <operation id="FileManager.ImportWithProperties"> <param name="overwrite" type="boolean">true</param> <param name="properties" type="properties">expr:Context.get("docMetaData")</param> </operation> </chain> </extension>
-
<extension point="chains" target="org.nuxeo.ecm.core.operation.OperationServiceComponent"> <chain id="Blob.ImportWorklist"> <aliases> <alias>ImportWorklist</alias> </aliases> <operation id="Seam.InitContext"/> <operation id="UserWorkspace.CreateDocumentFromBlob"/> <operation id="Document.Save"/> <operation id="Seam.AddToWorklist"/> <operation id="Seam.DestroyContext"/> </chain> <chain id="Blob.ImportClipboard"> <aliases> <alias>ImportClipboard</alias> </aliases> <operation id="Seam.InitContext"/> <operation id="UserWorkspace.CreateDocumentFromBlob"/> <operation id="Document.Save"/> <operation id="Seam.AddToClipboard"/> <operation id="Seam.DestroyContext"/> </chain> <chain id="SeamActions.GET"> <operation id="Seam.RunOperation"> <param name="id" type="string">Actions.GET</param> </operation> </chain> <chain id="FileManager.ImportWithMetaDataInSeam"> <operation id="FileManager.ImportWithProperties"> <param name="overwrite" type="boolean">true</param> <param name="properties" type="properties">expr:Context.get("docMetaData")</param> </operation> <operation id="Seam.RunOperation"> <param name="id" type="string">Seam.Refresh</param> </operation> </chain> <chain id="FileManager.ImportInSeam"> <operation id="FileManager.Import"> <param name="overwite" type="boolean">true</param> </operation> <operation id="Seam.RunOperation"> <param name="id" type="string">Seam.Refresh</param> </operation> </chain> </extension>
-
<extension point="chains" target="org.nuxeo.ecm.core.operation.OperationServiceComponent"> <chain id="acceptComment"> <operation id="Context.FetchDocument"/> <operation id="Comment.Moderate"> <param name="accept" type="boolean">true</param> </operation> </chain> <chain id="rejectComment"> <operation id="Context.FetchDocument"/> <operation id="Comment.Moderate"> <param name="accept" type="boolean">false</param> </operation> </chain> </extension>
-
<extension point="chains" target="org.nuxeo.ecm.core.operation.OperationServiceComponent"> <chain id="Image.Blob.Resize"> <operation id="Blob.RunConverter"> <param name="converter" type="string">pictureResize</param> </operation> </chain> <chain id="Image.Blob.ConvertToPDF"> <operation id="Context.PopBlob"/> <operation id="Blob.RunConverter"> <param name="converter" type="string">pictureConvertToPDF</param> </operation> </chain> </extension>
-
<extension point="chains" target="org.nuxeo.ecm.core.operation.OperationServiceComponent"> <chain id="CreateMailDocumentFromAutomation"> <operation id="Context.RestoreDocumentInput"> <param name="name" type="string">mailFolder</param> </operation> <operation id="Document.Create"> <param name="type" type="string">MailMessage</param> <param name="name" type="string">expr:Context["mailDocumentName"]</param> <param name="properties" type="properties">expr:mail:messageId=@{messageId} </param> </operation> <operation id="Context.SetInputAsVar"> <param name="name" type="string">mailDocument</param> </operation> <operation id="Context.RunOperationOnList"> <param name="id" type="string">ProcessAttachment</param> <param name="list" type="string">attachments</param> <param name="isolate" type="boolean">true</param> <param name="item" type="string">attachment</param> </operation> <operation id="RunScript"> <param name="script" type="string"> Context["mailDocument"].setPropertyValue("dc:title",Context["subject"]); Context["mailDocument"].setPropertyValue("mail:htmlText",Context["text"]); Context["mailDocument"].setPropertyValue("mail:recipients",Context["recipients"]); Context["mailDocument"].setPropertyValue("mail:cc_recipients",Context["ccRecipients"]); Context["mailDocument"].setPropertyValue("mail:sending_date",Context["sendingDate"]); </param> </operation> <operation id="Context.RestoreDocumentInput"> <param name="name" type="string">mailDocument</param> </operation> <operation id="Document.Save"/> </chain> <chain id="ProcessAttachment"> <operation id="Context.RestoreBlobInput"> <param name="name" type="string">attachment</param> </operation> <operation id="Blob.AttachOnDocument"> <param name="document" type="document">expr:Context["mailDocument"]</param> <param name="save" type="boolean">false</param> <param name="xpath" type="string">files:files</param> </operation> </chain> </extension>
-
<extension point="chains" target="org.nuxeo.ecm.core.operation.OperationServiceComponent"> <chain id="blobToPDF"> <operation id="Context.PopBlob"/> <operation id="Blob.ToPDF"/> </chain> <chain id="xmlExportRendition"> <operation id="Context.PopDocument"/> <operation id="Document.Export"/> </chain> <chain id="zipTreeExportRendition"> <operation id="Context.PopDocument"/> <operation id="Document.Export"> <param name="exportAsTree" type="boolean">true</param> </operation> </chain> <chain id="mainBlob"> <operation id="Context.PopDocument"/> <operation id="Document.GetBlob"/> </chain> <chain id="containerContentBlob"> <operation id="Context.PopDocument"/> <operation id="Document.GetContainerRendition"> <param name="reason" type="string">download</param> <param name="limit" type="int">200</param> <param name="maxDepth" type="int">2</param> </operation> </chain> </extension>
-
<extension point="chains" target="org.nuxeo.ecm.core.operation.OperationServiceComponent"> <chain id="downloadFilesZip"> <operation id="Context.FetchDocument"/> <operation id="Document.GetBlobs"/> <operation id="Blob.CreateZip"> <param name="filename" type="string">attachments.zip </param> </operation> <operation id="Seam.DownloadFile"/> </chain> </extension>
-
<extension point="chains" target="org.nuxeo.ecm.core.operation.OperationServiceComponent"> <chain id="addCurrentDocumentToWorklist"> <operation id="Context.FetchDocument"/> <operation id="Seam.AddToWorklist"/> <operation id="Seam.AddMessage"> <param name="severity" type="string">INFO</param> <param name="message" type="string">label.document.added.to.worklist</param> </operation> </chain> </extension>
-
<extension point="chains" target="org.nuxeo.ecm.core.operation.OperationServiceComponent"> <chain id="setDone"> <operation id="Document.Routing.Step.Done"/> </chain> <chain id="simpleValidate"> <operation id="Document.Routing.Resume.Step"/> </chain> <chain id="simpleRefuse"> <operation id="Document.Routing.Resume.Step"/> </chain> <chain id="simpleUndo"> <operation id="Document.Routing.BackToReady"/> </chain> <chain id="setNextStep"> <operation id="Update.NextStep.ConditionalFolder"/> </chain> <chain id="decideNextStepAndSimpleValidate"> <operation id="Update.NextStep.ConditionalFolder"> <param name="nextStepPos" type="string">expr:Context['nextStepPos'] </param> </operation> <operation id="Document.Routing.Resume.Step"/> </chain> <chain id="updateCommentsOnDoc"> <operation id="Document.Routing.UpdateCommentsInfoOnDocument"/> </chain> <chain id="simpleChooseNextOption1AndDone"> <operation id="Update.NextStep.ConditionalFolder"> <param name="nextStepPos" type="string">1</param> </operation> <operation id="Document.Routing.Step.Done"/> </chain> <chain id="simpleChooseNextOption2AndDone"> <operation id="Update.NextStep.ConditionalFolder"> <param name="nextStepPos" type="string">2</param> </operation> <operation id="Document.Routing.Step.Done"/> </chain> </extension>
-
<extension point="chains" target="org.nuxeo.ecm.core.operation.OperationServiceComponent"> <chain id="NRD-AC-PR-ChooseParticipants-Output"> <operation id="Context.FetchDocument"/> <operation id="RunOperation"> <param name="id" type="string">NRD-AC-PR-LockDocument</param> <param name="isolate" type="boolean">false</param> </operation> <operation id="Context.SetWorkflowVar"> <param name="name" type="string">initiatorComment</param> <param name="value" type="object">expr:NodeVariables["comment"]</param> </operation> </chain> <chain id="NRD-AC-PR-LockDocument"> <operation id="Context.FetchDocument"/> <operation id="Auth.LoginAs"> <param name="name" type="string">expr:workflowInitiator</param> </operation> <operation id="RunOperation"> <param name="id" type="string">expr:Document.isLocked()?"voidChain":"Document.Lock"</param> <param name="isolate" type="boolean">false</param> </operation> </chain> <chain id="NRD-AC-PR-UnlockDocument"> <operation id="Context.FetchDocument"/> <operation id="Document.Unlock"/> </chain> <chain id="NRD-AC-PR-ValidateNode-Output"> <operation id="Context.FetchDocument"/> <operation id="RunOperation"> <param name="id" type="string">NRD-AC-PR-UnlockDocument</param> <param name="isolate" type="boolean">false</param> </operation> <operation id="RunOperation"> <param name="id" type="string">logInAudit</param> <param name="isolate" type="boolean">false</param> </operation> </chain> <chain id="NRD-AC-PR-force-validate"> <operation id="Context.FetchDocument"/> <operation id="Auth.LoginAs"> <param name="name" type="string">expr:Context["workflowInitiator"]</param> </operation> <operation id="Audit.LogEvent"> <param name="event" type="string">Consultation time excedeed</param> <param name="category" type="string">Review workflow</param> <param name="comment" type="string">Some consultation tasks were aborted by the system as they received no feedback message.</param> </operation> <operation id="Workflow.ResumeNode"/> </chain> <chain id="NRD-AC-PR-storeTaskInfo"> <operation id="Context.FetchDocument"/> <operation id="RunScript"> <param name="script" type="string">This[0]</param> </operation> <operation id="Context.SetVar"> <param name="name" type="string">tasksInfo</param> <param name="value" type="object">expr:NodeVariables["tasks"]</param> </operation> <operation id="Context.SetVar"> <param name="name" type="string">numberNA</param> <param name="value" type="object">expr:NodeVariables["tasks"].getNumberEndedWithStatus("NA")</param> </operation> <operation id="Context.SetVar"> <param name="name" type="string">numberRejected</param> <param name="value" type="object">expr:NodeVariables["tasks"].getNumberEndedWithStatus("reject")</param> </operation> <operation id="Context.SetVar"> <param name="name" type="string">numberApproved</param> <param name="value" type="object">expr:NodeVariables["tasks"].getNumberEndedWithStatus("approve")</param> </operation> <operation id="Context.SetVar"> <param name="name" type="string">numberOfTasks</param> <param name="value" type="object">expr:NodeVariables["numberOfTasks"]</param> </operation> <operation id="Render.Document"> <param name="template" type="string">template:NRD-PR-TasksInfo</param> <param name="filename" type="string">output.ftl</param> <param name="mimetype" type="string">text/xml</param> <param name="type" type="string">ftl</param> </operation> <operation id="Context.SetWorkflowVar"> <param name="name" type="string">review_result_file</param> <param name="value" type="object">expr:This.get(0)</param> </operation> <operation id="Context.SetWorkflowVar"> <param name="name" type="string">review_result</param> <param name="value" type="object">expr:This.get(0).getString()</param> </operation> </chain> <chain id="cancelWorkflow"> <operation id="Context.FetchDocument"/> <operation id="Context.SetVar"> <param name="name" type="string">isParallelWF</param> <param name="value" type="object">expr:Event.context.getProperty("wfName").equals("wf.parallelDocumentReview.ParallelDocumentReview")?true:false</param> </operation> <operation id="RunOperation"> <param name="id" type="string">expr:isParallelWF?"Document.Unlock":"voidChain"</param> <param name="isolate" type="boolean">false</param> </operation> </chain> <chain id="initInitiatorComment"> <operation id="RunScript"> <param name="script" type="string">if((NodeVariables["comment"] != "") AND (NodeVariables["comment"] != null)){ WorkflowVariables["initiatorComment"]= NodeVariables["comment"];}</param> </operation> </chain> <chain id="logInAudit"> <operation id="Audit.LogEvent"> <param name="event" type="string">expr:NodeVariables["button"] =="reject"?"chain.document.refused":"chain.document.validated"</param> <param name="category" type="string">Review workflow</param> <param name="comment" type="string">expr:@{nodeLastActor} @{NodeVariables["button"] =="reject"?"chain.document.refused":"chain.document.validated"} the document with the following comment: @{NodeVariables["comment"]}</param> </operation> </chain> <chain id="nextAssignee"> <operation id="RunScript"> <param name="script" type="string">if (NodeVariables["button"] == "validate") { WorkflowVariables["index"] = WorkflowVariables["index"] + 1; } else if (NodeVariables["button"] == "reject") { WorkflowVariables["index"] = WorkflowVariables["index"] - 1; } else if (NodeVariables["button"] == "submit") { WorkflowVariables["index"] = 0; }</param> </operation> </chain> <chain id="notifyInitiatorEndOfWorkflow"> <operation id="Context.FetchDocument"/> <operation id="Document.Mail"> <param name="from" type="string">expr:Env["mail.from"]</param> <param name="message" type="string">The document was approved by every participant.</param> <param name="subject" type="string">expr:@{Env["nuxeo.notification.eMailSubjectPrefix"]} Document approved</param> <param name="to" type="stringlist">expr:Fn.getEmail(workflowInitiator)</param> <param name="HTML" type="boolean">false</param> <param name="rollbackOnError" type="boolean">true</param> <param name="viewId" type="string">view_documents</param> </operation> </chain> <chain id="reinitAssigneeComment"> <operation id="RunScript"> <param name="script" type="string">if((NodeVariables["comment"] != "") AND (NodeVariables["comment"] != null)){ NodeVariables["comment"]= null;}</param> </operation> </chain> <chain id="terminateWorkflow"> <operation id="Context.FetchDocument"/> <operation id="RunOperation"> <param name="id" type="string">logInAudit</param> <param name="isolate" type="boolean">false</param> </operation> <operation id="Context.RunDocumentOperationInNewTx"> <param name="id" type="string">notifyInitiatorEndOfWorkflow</param> <param name="isolate" type="boolean">false</param> <param name="rollbackGlobalOnError" type="boolean">false</param> </operation> <operation id="RunOperation"> <param name="id" type="string">expr:WorkflowVariables["validationOrReview"] == "validation"?"validateDocument":"voidChain"</param> <param name="isolate" type="boolean">false</param> </operation> <operation id="Audit.LogEvent"> <param name="event" type="string">Review completed successfully</param> <param name="category" type="string">Review workflow</param> <param name="comment" type="string">All the participants of the review have approved the document.</param> </operation> </chain> <chain id="validateDocument"> <operation id="Context.FetchDocument"/> <operation id="Document.FollowLifecycleTransition"> <param name="value" type="string">approve</param> </operation> <operation id="Document.CheckIn"> <param name="version" type="string">minor</param> <param name="comment" type="string">Automatic checkin after validation</param> </operation> </chain> <chain id="voidChain"> <operation id="Context.FetchDocument"/> </chain> </extension>
-
<extension point="chains" target="org.nuxeo.ecm.core.operation.OperationServiceComponent"> <chain id="simpleTask"> <operation id="Context.FetchDocument"/> <operation id="Workflow.CreateRoutingTask"> <param name="accept operation chain" type="string"> setTaskDone </param> <param name="reject operation chain" type="string"> setTaskDone </param> <param name="mappingProperties" type="Properties"> <property key="dc:description">StepTask:dc:description</property> <property key="nt:directive">StepTask:dc:description</property> </param> </operation> <operation id="Context.RunDocumentOperationInNewTx"> <param name="rollbackGlobalOnError" type="boolean">false</param> <param name="id" type="string">sendTaskCreatedNotificationMail </param> </operation> </chain> <chain id="followLifeCycleTransitionTask"> <operation id="Context.FetchDocument"/> <operation id="Workflow.CreateRoutingTask"> <param name="accept operation chain" type="string"> followLifeCycleTransition </param> <param name="reject operation chain" type="string"> setTaskDone </param> <param name="mappingProperties" type="Properties"> <property key="dc:description">StepTask:dc:description</property> </param> </operation> <operation id="Context.RunDocumentOperationInNewTx"> <param name="rollbackGlobalOnError" type="boolean">false</param> <param name="id" type="string">sendTaskCreatedNotificationMail </param> </operation> </chain> <chain id="publishTask"> <operation id="Context.FetchDocument"/> <operation id="Workflow.CreateRoutingTask"> <param name="accept operation chain" type="string"> publishDocument </param> <param name="reject operation chain" type="string"> setTaskDone </param> <param name="mappingProperties" type="Properties"> <property key="dc:description">StepTask:dc:description</property> </param> </operation> <operation id="Context.RunDocumentOperationInNewTx"> <param name="rollbackGlobalOnError" type="boolean">false</param> <param name="id" type="string">sendTaskCreatedNotificationMail </param> </operation> </chain> <chain id="conditionalTask"> <operation id="Context.FetchDocument"/> <operation id="Workflow.CreateRoutingTask"> <param name="accept operation chain" type="string"> evaluateCondition </param> <param name="reject operation chain" type="string"> setTaskDone </param> <param name="mappingProperties" type="Properties"> <property key="dc:description">StepTask:dc:description</property> </param> </operation> <operation id="Context.RunDocumentOperationInNewTx"> <param name="rollbackGlobalOnError" type="boolean">false</param> <param name="id" type="string">sendTaskCreatedNotificationMail </param> </operation> </chain> <chain id="setTaskDone"> <operation id="Document.Routing.SetRunningStepFromTask"> <param name="mappingComments" type="boolean">true</param> </operation> <operation id="Document.Routing.Resume.Step"/> </chain> <chain id="undoRunningTask"> <operation id="Workflow.RemoveRoutingTask"/> <operation id="Document.Routing.BackToReady"/> </chain> <chain id="followLifeCycleTransition"> <operation id="Context.FetchDocument"/> <operation id="Document.Routing.SetRunningStepFromTask"/> <operation id="Document.FollowLifecycleTransition"> <param name="value" type="string">expr:Context["document.routing.step"].getDocument().getPropertyValue("tkst:directive") </param> </operation> <operation id="Document.Routing.Resume.Step"/> </chain> <chain id="publishDocument"> <operation id="Context.FetchDocument"/> <operation id="Document.Routing.SetRunningStepFromTask"/> <operation id="Document.Publish"> <param name="target" type="string">expr:Context["document.routing.step"].getDocument().getPropertyValue("tkst:directive") </param> </operation> <operation id="Document.Routing.Resume.Step"/> </chain> <chain id="evaluateCondition"> <operation id="Context.FetchDocument"/> <operation id="Document.Routing.SetRunningStepFromTask"/> <operation id="Document.Routing.EvaluateCondition"> <param name="subject" type="string">expr:Context["document.routing.step"].getDocument().getPropertyValue("ctkst:subject") </param> <param name="operator" type="string">expr:Context["document.routing.step"].getDocument().getPropertyValue("ctkst:operator") </param> <param name="value" type="string">expr:Context["document.routing.step"].getDocument().getPropertyValue("ctkst:value") </param> </operation> <operation id="Update.NextStep.ConditionalFolder"> <param name="nextStepPos" type="string">expr:Context['nextStepPos'] </param> </operation> <operation id="Document.Routing.Resume.Step"/> </chain> <chain id="sendTaskCreatedNotificationMail"> <operation id="Notification.SendMail"> <param name="from" type="string">Administrator@nuxeo.com</param> <param name="message" type="string">template:routingTaskAssigned </param> <param name="subject" type="string">expr:Context["document.routing.step"].getDocument().getPropertyValue("dc:title") </param> <param name="to" type="stringlist">expr:Fn.getEmails(Context["document.routing.task.actors"]) </param> <param name="HTML" type="boolean">false</param> </operation> </chain> </extension>